home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 3 / Cream of the Crop 3.iso / comm / wnos5src.zip / FTP.H < prev    next >
Text File  |  1993-08-09  |  3KB  |  88 lines

  1. #ifndef _FTP_H
  2. #define _FTP_H
  3.  
  4. #ifndef _SOCKET_H
  5. #include "socket.h"
  6. #endif
  7.  
  8. #ifndef _SESSION_H
  9. #include "session.h"
  10. #endif
  11.  
  12. #define    BLKSIZE            2048    /* Chunk size for file I/O */
  13. #define CTLZ            26        /* EOF for CP/M systems */
  14.  
  15. #define    ASCII_TYPE        0
  16. #define    IMAGE_TYPE        1
  17. #define    LOGICAL_TYPE    2
  18.  
  19. #define DELE_CMD 6
  20. #define RETR_CMD 9
  21. #define STOR_CMD 10
  22. #define MKD_CMD  15
  23. #define RMD_CMD  18
  24.  
  25. #define    FTPLINE            512        /* Length of user command buffer */
  26.  
  27. struct ftpserv {
  28.     int control;                /* Control socket */
  29.     int data;                    /* Data socket */
  30.     char type;                    /* Transfer type */
  31.     int logbsize;                /* Logical byte size for logical type */
  32.     FILE *fp;                    /* File descriptor being transferred */
  33.     struct sockaddr_in port;    /* Remote port for data connection */
  34.     char *username;                /* Arg to USER command */
  35.     char *path;                    /* Allowable path prefix */
  36.     char *cd;                    /* Current directory name */
  37.     int16 perms;                /* Permission flag bits */
  38.     int states;
  39. #define USER    0
  40. #define PASS    1
  41. #define LOG        2
  42. #define CLOSED    4
  43.     char *line;                    /* input line */
  44. };
  45. #define NULLFTPS (struct ftpserv *)0
  46.  
  47. /* Per-session FTP client control block */
  48. struct ftpcli {
  49.     int control;                /* Control socket */
  50.     int data;                    /* Data socket */
  51.     char state;
  52. #define    COMMAND_STATE    0        /* Awaiting user command */
  53. #define    SENDING_STATE    1        /* Sending data to user */
  54. #define    RECEIVING_STATE    2        /* Storing data from user */
  55. #define CLOSED            4
  56.     int16 verbose;                /* Transfer verbosity level */
  57. #define    V_QUIET            0        /* Error messages only */
  58. #define    V_SHORT            1        /* Final message only */
  59. #define    V_NORMAL        2        /* display control messages */
  60. #define    V_HASH            3        /* control messages, hash marks */
  61. #define V_BYTE            4        /* control messages, byte count */
  62.     int batch;                    /* Command batching flag */
  63.     int abort;                    /* Aborted transfer flag */
  64.     char type;                    /* Transfer type */
  65.     char typesent;                /* Last type command sent to server */
  66.     int logbsize;                /* Logical byte size for logical type */
  67.     FILE *fp;                    /* File descriptor being transferred */
  68.     struct session *session;
  69.     char *buf;                    /* input buffer */
  70.     char *username;
  71.     char *password;
  72. };
  73. #define    NULLFTPC (struct ftpcli *)0
  74.  
  75.  
  76. int permcheck __ARGS((char *path,int perms,int op,char *file));
  77.  
  78. /* In ftpsubr.c: */
  79. long sendfile __ARGS((FILE *fp,int s,int mode,int hash));
  80. long recvfile __ARGS((FILE *fp,int s,int mode,int hash));
  81. int isbinary __ARGS((FILE *fp));
  82.  
  83. /* in ftpserv.c */
  84. void ftpserv __ARGS((int s,void *unused,void *p));
  85.  
  86. #endif    /* _FTP_H */
  87.  
  88.